#ifndef LUCNXFS_H
#define LUCNXFS_H

#include <Lucnx/mutex.h>

#define BLOCK_SIZE 512       // 一个块占用一个扇区
#define MAX_FILES 4096       // 最多有 4096 个文件
#define FREE_BLOCK           // 

typedef struct super_t
{
    u32 magic;

    u32 inode_table_lba;
    u32 inode_table_sectors;

    u32 inode_map_lba;
    u32 inode_map_sectors;

    u32 block_map_lba;
    u32 block_map_sectors;

    u32 data_lba; // 数据区的起始地址
    u32 root_dir_lba; // 根目录LBA
}_packed super_t;

typedef enum ftype_t
{
    FT_UNKOWN,
    FT_FILE,
    FT_DIR
}ftype_t;

typedef struct inode_t
{
    ino_t i_no;     // inode 的编号
    int32 i_size;   // 文件大小
    lock_t i_lock;  // inode 锁
    u32 zone[13];
}inode_t;

typedef struct dir_t
{
    inode_t *inode;
    int32 dir_pos;
    char dir_buf[512];
}dir_t;

typedef struct dentry_t
{
    char file_name[16];
    ino_t i_no;
    ftype_t file_type;
}dir_entry_t;

#endif